package com.vercon.commonmirror.utils.langlib;

import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.os.LocaleList;
import android.util.DisplayMetrics;

import com.vercon.commonmirror.utils.LogUtils;

import java.util.Locale;

/**
 * Created by csh on 2020/7/11
 * 语言切换
 */
public class CLang {
    /**
     * 初始化 需要在application中，默认环境是英文即原strings文件，需要添加values-zh_tw 文件夹存放中文strings文件
     * 注意：刚开始启动会默认跟随系统语言
     */
    public static final String LANG_NAME = "language";
    public static final String LANG_ZH = "zh";//中文
    public static final String LANG_ZH_TW = "zh_tw";//繁体中文

    public static final String LANG_EN = "en";//英文
    public static final String LANG_DE = "de";//德语
    public static final String LANG_ES = "es";//西班牙语
    public static final String LANG_FR = "fr";//法语
    public static final String LANG_IT = "it";//意大利语
    public static final String LANG_JA = "ja";//日本语
    public static final String LANG_RU = "ru";//俄语
    public static final String LANG_KR = "ko";//韩语
    public static final String LANG_AR = "ar";//阿拉伯语
    public static final String LANG_PT = "pt";//葡萄牙语
    public static final String LANG_TH = "th";//泰语
    public static final String LANG_VI = "vi";//越南语
    public static final String LANG_NL = "nl";//荷兰语
    public static final String LANG_TR = "tr";//土耳其语
    public static Context mContext;

    public static void init(Context context) {
        mContext = context;
        String lang = getLang(context);
        setLang(context, lang);
    }

    public static Context getContext() {
        return mContext;
    }

    //设置语言
    public static void setLang(Context context, String lang) {

        Resources resources = context.getResources();
        Configuration config = resources.getConfiguration();
        Locale locale;
        if (lang.equals(LANG_ZH)) {
            locale = Locale.SIMPLIFIED_CHINESE;
        } else if (lang.equals(LANG_EN)){
            locale = Locale.ENGLISH;
        } else if (lang.equals(LANG_DE)) {
            locale = Locale.GERMAN;
        } else {
            locale = Locale.TRADITIONAL_CHINESE;
        }
        SPUtils.put(context, LANG_NAME, lang);
        // updateConfiguration
        DisplayMetrics metrics = resources.getDisplayMetrics();
        config.setLocale(locale);
        //Android 7.0以上增加
        if (Build.VERSION.SDK_INT >= 24) {
            config.setLocales(new LocaleList(locale));
            context.createConfigurationContext(config);
            //实测，updateConfiguration这个方法虽然很多博主说是版本不适用
            //但是我的生产环境androidX+Android Q环境下，必须加上这一句，才可以通过重启App来切换语言
        }
        resources.updateConfiguration(config, metrics);
        //设置系统语言

    }

    //获取当前语言
    public static String getLang(Context context) {
        //默认英文(en)中文zh，日文ja，意大利it
        String lang = SPUtils.get(context, LANG_NAME, LANG_EN);
        LogUtils.d(lang);

        return lang;
    }
}
